﻿#define _CRT_SECURE_NO_WARNINGS 1


//合并表记录
//描述
//数据表记录包含表索引index和数值value（int范围的正整数），请对表索引相同的记录进行合并，即将相同索引的数值进行求和运算，输出按照index值升序进行输出。
//0 <= index <= 11111111
//1 <= value <= 100000
//输入描述：
//先输入键值对的个数n（1 <= n <= 500）
//接下来n行每行输入成对的index和value值，以空格隔开
//输出描述：
//输出合并后的键值对（多行）
//示例1
//输入：4
//      0 1
//      0 2
//      1 2
//      3 4
//输出：0 3
//      1 2
//      3 4
//示例2
//输入：3
//      0 1
//      0 2
//      8 9
//输出：0 3
//      8 9

//#include<stdio.h>
//int cmp(const void* str1, const void* str2)
//{
//    return (*(int(*)[2])str1)[0] - (*(int(*)[2])str2)[0];
//}
//int main()
//{
//    int n = 0;
//    scanf("%d", &n);
//    int arr[n][2];
//    for (int i = 0; i < n; i++)
//        scanf("%d %d", &arr[i][0], &arr[i][1]);
//    qsort(arr, n, sizeof(int(*)[0]), cmp);
//    for (int i = 0; i < n; i++)
//    {
//        if (arr[i][0] == arr[i + 1][0] && i < n - 1)
//            arr[i + 1][1] += arr[i][1];
//        else
//            printf("%d %d\n", arr[i][0], arr[i][1]);
//    }
//    return 0;
//}










////
////二维数组操作
////描述
////有一个m* n\m∗n 大小的数据表，你会依次进行以下5种操作
////1.数据表的最大规格为9行 * 9列，对表格进行操作时遇到超出规格应该返回错误。
////2.对于插入操作，如果插入后行数或列数超过9了则应返回错误。如果插入成功了则将数据表恢复至初始化的m * n\m∗n 大小，多出的数据则应舍弃。
////3.所有输入坐标操作，对m * n\m∗n 大小的表格，行号坐标只允许0~m - 1，列号坐标只允许0~n - 1。超出范围应该返回错误。
////
////本题含有多组样例输入！行列从0开始标号
////数据范围：数据组数：1\le t\le 5\1≤t≤5
////进阶：时间复杂度：O(1)\O(1) ，空间复杂度：O(1)\O(1)
////输入描述：
////输入数据按下列顺序输入：
////1 表格的行列值
////2 要交换的两个单元格的行列值
////3 输入要插入的行的数值
////4 输入要插入的列的数值
////5 输入要查询的单元格的坐标
////
////输出描述：
////输出按下列顺序输出：
////1 初始化表格是否成功，若成功则返回0， 否则返回 - 1
////2 输出交换单元格是否成功
////3 输出插入行是否成功
////4 输出插入列是否成功
////5 输出查询单元格数据是否成功
////示例1
////输入：4 9
////      5 1 2 6
////      0
////      8
////      2 3
////输出：0
////     - 1
////     0
////     - 1
////     0
//
//#include<stdio.h>
//int main()
//{
//    int m = 0;
//    int n = 0;
//    int arr[m][n];
//    while (scanf("%d %d", &m, &n) != EOF)
//    {
//        int x1 = 0, y1 = 0, x2 = 0, y2 = 0;
//        scanf("%d %d %d %d", &x1, &y1, &x2, &y2);
//        int x = 0;
//        scanf("%d", &x);
//        int y = 0;
//        scanf("%d", &y);
//        int a = 0, b = 0;
//        scanf("%d %d", &a, &b);
//        if (m <= 9 && n <= 9)
//            printf("0\n");
//        else
//            printf("-1\n");
//
//        if (x1 >= 0 && x1 <= m - 1 && x2 >= 0 && x2 <= m - 1 && y1 >= 0 && y1 <= n - 1 && y2 >= 0 && y2 <= n - 1)
//            printf("0\n");
//        else
//            printf("-1\n");
//
//        if (m + 1 <= 9 && x < m)
//            printf("0\n");
//        else
//            printf("-1\n");
//
//        if (n + 1 <= 9 && y < n)
//            printf("0\n");
//        else
//            printf("-1\n");
//
//        if (a >= 0 && a <= m - 1 && b >= 0 && b <= n - 1)
//            printf("0\n");
//        else
//            printf("-1\n");
//    }
//    return 0;
//}










////记票统计
////描述
////请实现一个计票统计系统。你会收到很多投票，其中有合法的也有不合法的，请统计每个候选人得票的数量以及不合法的票数。
////（注：不合法的投票指的是投票的名字不存在n个候选人的名字中！！）
////
////输入描述：
////第一行输入候选人的人数n，第二行输入n个候选人的名字（均为大写字母的字符串），第三行输入投票人的人数，第四行输入投票。
////
////输出描述：
////按照输入的顺序，每行输出候选人的名字和得票数量（以" : "隔开，注：英文冒号左右两边都有一个空格！），最后一行输出不合法的票数，格式为"Invalid : " + 不合法的票数。
////
////示例1
////输入：4
////      A B C D
////      8
////      A D E CF A GG A B
////输出：A : 3
////      B : 1
////      C : 0
////      D : 1
////Invalid : 3
////说明：E CF GG三张票是无效的，所以Invalid的数量是3.
//
//#include<stdio.h>
//int main()
//{
//    int num1 = 0;
//    scanf("%d", &num1);
//    char arr1[100][20] = { 0 };
//    for (int i = 0; i < num1; i++)
//        scanf("%s", &arr1[i][0]);
//
//    int num2 = 0;
//    scanf("%d", &num2);
//    char arr2[100][20] = { 0 };
//    for (int i = 0; i < num2; i++)
//        scanf("%s", &arr2[i]);
//
//    int num = 0;
//    int count[100] = { 0 };
//
//    for (int i = 0; i < num1; i++)
//        for (int j = 0; j < num2; j++)
//            if (strcmp(arr2[j], arr1[i]) == 0)
//            {
//                count[i]++;
//                num++;
//            }
//
//    for (int i = 0; i < num1; i++)
//        printf("%s : %d\n", arr1[i], count[i]);
//    printf("Invalid : %d", num2 - num);
//    return 0;
//}

